DD.WellWorkover.Cloud/AsbCloudWebApi/Docs/about using DateTime[Offset].md

17 lines
1.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## Проблема
Скважины и пользователи ЕЦП расположены на различных часовых поясах.
В БД время хранится только в UTC.
На страницах ЕЦП время везде должно отображаться в часовом поясе скважины.
Web Api должен понимать при обращении время как в UTC `2021-12-29T07:00:00Z`, так и с указанием часового пояса `2021-12-29T12:00:00+05`.
## Решение
В БД уже хранится часовой пояс скважины в таблице телеметрии.
На стороне backEnd публичные методы контроллеров и методы сервисов,
которые вызываются из контроллеров должны понимать параметры времени как тип DateTime, затем приводить его к UTC.
Если DateTime.Kind == unspecified, то считается что *это время указанное в часовом поясе скважины*.
При переходе на DateTimeOffset флаги isUTC не нужны
Даты в Model - используют DateTimeOffset.
Даты в Dto - используют DateTime без указания часового пояса во времени скважины.
При получении Dto от фронта с kind == unspecified дата приводится к UTC как будто она в часовом поясе скважины.
Перед отправкой клиенту в Dto все даты приводятся к часовому поясу скважины и kind устанавливается как unspecified.